import java.io.FileNotFoundException;
import java.io.IOException;


/**
 * COSC 455 Programming Languages: Implementation and Design.
 *
 * A Simple Syntax Analyzer adapted from Sebesta (2010) by Josh Dehlinger,
 * modified by Adam Conover (2012) and interfaced by Josh Dehlinger (2013).
 *
 * Note that these are not the only methods necessary to parse the BNF
 * grammar rules. You will likely need to add new methods to your implementaion
 * of this interface.
 *
 */
public interface SyntaxAnalyzer {

        /**
         * This method implements the BNF grammar rule for the document annotation.
         * @throws CompilerException
         * @throws FileNotFoundException 
         * @throws IOException 
         */
        void document() throws IOException, CompilerException;

        /**
         * This method implements the BNF grammar rule for the head annotation.
         * @throws CompilerException
         * @throws IOException 
         */
        void head() throws CompilerException, IOException;

        /**
         * This method implements the BNF grammar rule for the title annotation.
         * @throws CompilerException
         * @throws IOException 

         */
        void title() throws CompilerException, IOException;

        /**
         * This method implements the BNF grammar rule for the paragraph annotation.
         * @throws CompilerException
         * @throws IOException 
         */
        void paragraph() throws CompilerException, IOException;

        /**
         * This method implements the BNF grammar rule for the bold annotation.
         * @throws CompilerException
         * @throws IOException 
         */
        void bold() throws CompilerException, IOException;

        /**
         * This method implements the BNF grammar rule for the italics annotation.
         * @throws CompilerException
         * @throws IOException 
         */
        void italics() throws CompilerException, IOException;

        /**
         * This method implements the BNF grammar rule for the list annotation.
         * @throws CompilerException
         * @throws IOException 
         */
        void listitems() throws CompilerException, IOException;

        /**
         * This method implements the BNF grammar rule for the item annotation.
         * @throws CompilerException
         */

        /**
         * This method implements the BNF grammar rule for the audio annotation.
         * @throws CompilerException
         * @throws IOException 
         */
        void audio() throws CompilerException, IOException;

        /**
         * This method implements the BNF grammar rule for the video annotation.
         * @throws CompilerException
         * @throws IOException 
         */
        void video() throws CompilerException, IOException;

        /**
         * This method implements the BNF grammar rule for the define annotation.
         * @throws CompilerException
         * @throws IOException 
         */
        void define() throws CompilerException, IOException;

        /**
         * This method implements the BNF grammar rule for the use annotation.
         * @throws CompilerException
         * @throws IOException 
         */
        void use() throws CompilerException, IOException;
        
        /**
         * This method implements the BNF grammar rule for text.
         * @throws CompilerException
         * @throws IOException 
         */
        
        void text(String string) throws CompilerException, IOException;

        void newline();

		void list() throws CompilerException, IOException;
		
		void innerlist() throws IOException, CompilerException;
}

